package com.example.imtoken.core.utils

import com.example.imtoken.core.logic.repository.WalletRepository
import com.example.imtoken.modules.main.wallet.add_token.AddTokenViewModelFactory
import com.example.imtoken.modules.main.wallet.assets.add.AddAssetsViewModelFactory
import com.example.imtoken.modules.main.wallet.create.CreateWalletViewModelFactory
import com.example.imtoken.modules.main.wallet.manage.wallet.imp.key.KeyStoreImportWalletViewModelFactory
import com.example.imtoken.modules.main.wallet.manage.wallet.imp.mnemonic.MnemonicImportWalletViewModelFactory
import com.example.imtoken.modules.main.wallet.manage.wallet.imp.privates.PrivateImportWalletViewModelFactory
import com.example.imtoken.modules.user.create.CreateUserViewModelFactory
import com.example.imtoken.modules.user.recovery.RecoveryUserViewModelFactory

object InjectorUtils {

    private val getWalletRepository = WalletRepository()

    fun getCreateUserViewModel() = CreateUserViewModelFactory(getWalletRepository)

    fun getAddTokenViewModel() = AddTokenViewModelFactory(getWalletRepository)

    fun getRecoveryUserViewModel() = RecoveryUserViewModelFactory(getWalletRepository)

    fun getAddAssetsViewModel() = AddAssetsViewModelFactory(getWalletRepository)

    fun getCreateWalletViewModel() = CreateWalletViewModelFactory(getWalletRepository)

    fun getMnemonicImportWalletViewModel() = MnemonicImportWalletViewModelFactory(
        getWalletRepository)

    fun getPrivateImportWalletViewModel() = PrivateImportWalletViewModelFactory(getWalletRepository)

    fun getKeyStoreImportWalletViewModel() = KeyStoreImportWalletViewModelFactory(
        getWalletRepository)

}